CRUD 示例

服务端

server.go

package main


import
(
"net/http"
"strconv"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
type(
    user struct{
        ID   int `json:"id"`
        Name string `json:"name"`
        }
)
var(
    users = map[int]*user{}
    seq = 1
)
//----------
// Handlers
//----------
func createUser(c echo.Context) error{
    u :=&user{
        ID: seq,
        }
    if err := c.Bind(u); err !=nil{
        return err
    }
    users[u.ID]= u
    seq++
    return c.JSON(http.StatusCreated, u)
}

func getUser(c echo.Context) error {
    id, _ := strconv.Atoi(c.Param("id")
    return c.JSON(http.StatusOK, users[id])
}

func updateUser(c echo.Context) error{
     u :=new(user)
     if err := c.Bind(u); err != nil{
         return err
     }
     id,_:= strconv.Atoi(c.Param("id"))
     users[id].Name = u.Name
     return c.JSON(http.StatusOK, users[id])
}

func deleteUser(c echo.Context) error
{
    id, _ := strconv.Atoi(c.Param("id"))
    delete(users, id)
    return c.NoContent(http.StatusNoContent)
}

func main(){
    e := echo.New()
    // Middleware
    e.Use(middleware.Logger())
    e.Use(middleware.Recover())
    // Routes
    e.POST("/users", createUser)
    e.GET("/users/:id", getUser)
    e.PUT("/users/:id", updateUser)
    e.DELETE("/users/:id", deleteUser)
    // Start server
    e.Logger.Fatal(e.Start(":1323"))
}

客户端

curl

创建 User

curl -X POST \
  -H 'Content-Type: application/json' \
  -d '{"name":"Joe Smith"}' \
  localhost:1323/users

Response

{
"id":1,
"name":"Joe Smith"
}

获取 User

curl localhost:1323/users/1

Response

{
"id":1,
"name":"Joe Smith"
}

更新 User

curl -X PUT \
  -H 'Content-Type: application/json' \
  -d '{"name":"Joe"}' \
  localhost:1323/users/1

Response

{
"id":1,\
"name":"Joe"
}

删除 User

curl -X DELETE localhost:1323/users/1

Response

NoContent - 204

results matching ""

    No results matching ""